/* Присвоение символических имен битам регистров ввода/вывода */

/* Эта примитивная программа зажигает светодиод по нажатию кнопки.
   Чип: AT90S2313.
   Светодиод подключен катодом к выводу 0 Порта B, а анодом через резистор
   470 Ом к плюсу источника питания. Кнопка одним выводом подключена к
   выводу 1 Порта B, а другим к минусу источника питания (к "общему").
   Частота кварца 1 МГц, хотя в данном случае она может быть любой */

#include <90s2313.h> 	// подключаем  файл, где определены адреса регистров

/* Присвоение символических имен */
#define output_led PORTB.0 	// Выход на светодиод
#define input_button PINB.1 	// Вход кнопки

/* Основная функция программы */
void main(void)
{
/* Зададим направление выводов Порта B */
DDRB.0=1; 		// зададим бит 0 Порта B как выход
DDRB.1=0; 		// зададим бит 1 Порта B как вход

/* Установим выводы Порта B */
output_led =1; 	// используем символическое имя бита PORTB.0,
// запишем в него 1, чтобы установить вывод 0
// Порта B как выход, на котором установлен уровень
// логической 1, чтобы светодиод не горел

PORTB.1=1; 		// установим бит 1 Порта B как "вход с подтяжкой",
// чтобы при отжатой кнопке на этом выводе была 1, а
// при нажатии кнопки уровень менялся на 0

/* Бесконечный цикл */

while (1) 				// Оператор цикла
{
/* Тело цикла while */
if (input_button==0) 	// В условии используем символическое
// имя вывода PINB.1. Если кнопка нажата,
// т.е. на выводе PINB.1 логический 0, то
output_led=0; 	// зажигаем светодиод
else 				// Иначе, если кнопка отжата,
output_led=1; 	// гасим светодиод
} 					// Скобка закрывает цикл while()
} 
